home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 June / Chip_2002-06_cd1.bin / zkuste / delphi / kolekce / d6 / rxlibsetup.exe / {app} / units / MAXMIN.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  2002-02-19  |  4.3 KB  |  186 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {         Delphi VCL Extensions (RX)                    }
  4. {                                                       }
  5. {         Copyright (c) 2001,2002 SGB Software          }
  6. {         Copyright (c) 1997, 1998 Fedor Koshevnikov,   }
  7. {                        Igor Pavluk and Serge Korolev  }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. {$I RX.INC}
  12. {$N+}
  13.  
  14. unit MaxMin;
  15.  
  16. interface
  17.  
  18. function Max(A, B: Longint): Longint;
  19. function Min(A, B: Longint): Longint;
  20. function MaxInteger(const Values: array of Longint): Longint;
  21. function MinInteger(const Values: array of Longint): Longint;
  22. {$IFDEF RX_D4}
  23. function MaxInt64(const Values: array of int64): int64;
  24. function MinInt64(const Values: array of int64): int64;
  25. {$ENDIF}
  26.  
  27. function MaxFloat(const Values: array of Extended): Extended;
  28. function MinFloat(const Values: array of Extended): Extended;
  29. function MaxDateTime(const Values: array of TDateTime): TDateTime;
  30. function MinDateTime(const Values: array of TDateTime): TDateTime;
  31. {$IFDEF WIN32}
  32. function MaxOf(const Values: array of Variant): Variant;
  33. function MinOf(const Values: array of Variant): Variant;
  34. {$ENDIF}
  35.  
  36. procedure SwapLong(var Int1, Int2: Longint);
  37. procedure SwapInt(var Int1, Int2: Integer);
  38. {$IFDEF RX_D4}
  39. procedure SwapInt64(var Int1, Int2: Int64);
  40. {$ENDIF}
  41.  
  42. {$IFNDEF WIN32}
  43. function MakeWord(A, B: Byte): Word;
  44. {$ENDIF}
  45.  
  46. implementation
  47.  
  48. {$IFNDEF WIN32}
  49. function MakeWord(A, B: Byte): Word;
  50. begin
  51.   Result := A or B shl 8;
  52. end;
  53. {$ENDIF}
  54.  
  55. procedure SwapInt(var Int1, Int2: Integer);
  56. var
  57.   I: Integer;
  58. begin
  59.   I := Int1; Int1 := Int2; Int2 := I;
  60. end;
  61.  
  62. {$IFDEF RX_D4}
  63. procedure SwapInt64(var Int1, Int2: Int64);
  64. var
  65.   I: Int64;
  66. begin
  67.   I := Int1; Int1 := Int2; Int2 := I;
  68. end;
  69. {$ENDIF}
  70.  
  71. procedure SwapLong(var Int1, Int2: Longint);
  72. var
  73.   I: Longint;
  74. begin
  75.   I := Int1; Int1 := Int2; Int2 := I;
  76. end;
  77.  
  78. function Max(A, B: Longint): Longint;
  79. begin
  80.   if A > B then Result := A
  81.   else Result := B;
  82. end;
  83.  
  84. function Min(A, B: Longint): Longint;
  85. begin
  86.   if A < B then Result := A
  87.   else Result := B;
  88. end;
  89.  
  90. function MaxInteger(const Values: array of Longint): Longint;
  91. var
  92.   I: Cardinal;
  93. begin
  94.   Result := Values[0];
  95.   for I := 0 to High(Values) do
  96.     if Values[I] > Result then Result := Values[I];
  97. end;
  98.  
  99. function MinInteger(const Values: array of Longint): Longint;
  100. var
  101.   I: Cardinal;
  102. begin
  103.   Result := Values[0];
  104.   for I := 0 to High(Values) do
  105.     if Values[I] < Result then Result := Values[I];
  106. end;
  107.  
  108. {$IFDEF RX_D4}
  109.  
  110. function MaxInt64(const Values: array of int64): int64; 
  111. var
  112.   I: Cardinal;
  113. begin
  114.   Result := Values[0];
  115.   for I := 0 to High(Values) do
  116.     if Values[I] > Result then Result := Values[I];
  117. end;
  118.  
  119. function MinInt64(const Values: array of int64): int64;
  120. var
  121.   I: Cardinal;
  122. begin
  123.   Result := Values[0];
  124.   for I := 0 to High(Values) do
  125.     if Values[I] < Result then Result := Values[I];
  126. end;
  127.  
  128. {$ENDIF RX_D4}
  129.  
  130. function MaxFloat(const Values: array of Extended): Extended;
  131. var
  132.   I: Cardinal;
  133. begin
  134.   Result := Values[0];
  135.   for I := 0 to High(Values) do
  136.     if Values[I] > Result then Result := Values[I];
  137. end;
  138.  
  139. function MinFloat(const Values: array of Extended): Extended;
  140. var
  141.   I: Cardinal;
  142. begin
  143.   Result := Values[0];
  144.   for I := 0 to High(Values) do
  145.     if Values[I] < Result then Result := Values[I];
  146. end;
  147.  
  148. function MaxDateTime(const Values: array of TDateTime): TDateTime;
  149. var
  150.   I: Cardinal;
  151. begin
  152.   Result := Values[0];
  153.   for I := 0 to High(Values) do
  154.     if Values[I] < Result then Result := Values[I];
  155. end;
  156.  
  157. function MinDateTime(const Values: array of TDateTime): TDateTime;
  158. var
  159.   I: Cardinal;
  160. begin
  161.   Result := Values[0];
  162.   for I := 0 to High(Values) do
  163.     if Values[I] < Result then Result := Values[I];
  164. end;
  165.  
  166. {$IFDEF WIN32}
  167. function MaxOf(const Values: array of Variant): Variant;
  168. var
  169.   I: Cardinal;
  170. begin
  171.   Result := Values[0];
  172.   for I := 0 to High(Values) do
  173.     if Values[I] > Result then Result := Values[I];
  174. end;
  175.  
  176. function MinOf(const Values: array of Variant): Variant;
  177. var
  178.   I: Cardinal;
  179. begin
  180.   Result := Values[0];
  181.   for I := 0 to High(Values) do
  182.     if Values[I] < Result then Result := Values[I];
  183. end;
  184. {$ENDIF WIN32}
  185.  
  186. end.